System Design interview cheat sheet
understand the problem and establish design scope (5 min)
-
clarify requirements
-
why are we building this
-
who are the users
-
what features do we need to build
-
get interviewer buy in on feature list
-
non-functional
-
focus on scale and performance
-
do rough calculations
-
get general sense of scale
-
should end with short list of features and a few non-functional requirements to satisfy
propose high level design and get buy in (20 min)
-
top down, start with APIs
-
define input parameters and output responses carefully
-
verify they satisfy functional requirements
-
design a diagram
-
start with load balancer or API gateway
-
behind that is the services that satisfy the requirements
-
behind that is persistence so introduce data storage
-
do this for each requirement
-
keep a list of conversation topics for later (scaling, concurrency, failure scenarios)
-
create data model and schema
-
data access patterns and read/write ratio
-
step back and review the design
design deep dive (15 min)
-
determine with interview what to discuss in depth
-
identify problematic areas and discuss trade offs
-
ask interviewer if they have any concerns about current design
-
for each area
-
articulate the problems
-
come up with 2 solutions
-
discuss tradeoffs of the solutions
-
pick a solution and discuss
wrap up (5 min)
- summarize the design
- note parts that are unique to this particular situation